# _*_ utf-8 _*_

# 字符串的访问
var1 = "hello world"
# 倒序输出
print(var1[-1::-1])
# 正序隔一个字符输出
print(var1[0::2])
# 字符串更新
print(var1[:6] + "Runoob!")
# 转义字符 自行研究 和Java中的一些转义字符类似， \t \r \n \\ \' \" \b  \a \000 \v -- 纵向制表符

# 字符串运算符
"""
+ 拼接  * 重复输出  [] 索引获取字符串中的字符
[:] 截取
in 成员运算符
not in 
在字符串前面加上r/R 可是使得字符串中的转义字符不生效

"""
# 字符串的格式化
"""
与c中的sprintf中的语法一样
%c %d %f %s and so on.
"""
print("我是%s , 我今年%d大了, 现在的存款是%.2f" % ('小明', 30, 32130.23))

# python 三引号
"""
允许一个字符串跨多行，字符串中可以包含换行符、制表符、及其它特殊字符
"""
para_str = """
    这是一个多行字符串的实例
    Tab (\t).
    也可以使用换行符 [ \n ].
"""
# print(para_str)

# 优点是，在处理html 或者是sql语句时，不用去考虑特殊字符

# f-string python3.6以后添加的，称为字面量格式化字符串，是新的格式化字符串的语法
name = 'Runoob'
print('hello %s' % name)
# print(f'hello (name)')  替换变量
# print(f'{1+2, 2*3, 2**3}')   #使用表达式
w = {'name': 'Runoob', 'url': 'www.runoob.com'}
# print(f'{w["name"]}: {w["url"]}') 使用时不用再判断是使用 %s 还是%d
x = 1
# print(f'{x+1}') # python3.6语法

# print(f'{x+1=}') # python3.8的语法

# 在python2中，字符串需要在前面加上前缀u才能表示是Unicode字符， 在python3中所有字符串都是Unicode字符串

# python的字符串内建函数

str2 = 'hello1world'
print(str2.capitalize())
# print(str2.center(5))
# print(str2.count('l', 4))

"""
decode encode 解码和编码
endswith(suffix,beg=0,end=len(string))  检查字符串是否以suffix结束。返回值为true 或 false
expandtabs   把字符串中的tab符号，转换为空格
find(str) 检查str是否包含在字符串中
index(str) 和find方法一样，只不过str 不在字符串中会报一个异常
isalnum() 如果字符串中至少有一个字符并且所有字符都是字母或数字，返回True， 否则返回False
isalpha isdigit islower isupper isnumeric isspace--只包含空白，返回True
istitle--标题化， join(seq),以指定字符串作为分割符，将seq中所有元素，合并为一个新的字符串
len(string) 返回字符串的长度
ljust 返回一个原字符串左对齐，并使用fillchar填充至长度width的新字符串， fillchar默认为空格
lstrip() 截掉字符串左边的空格，或者指定字符
maketrans() 与 translate()配合使用  在python3.4中 没有了string.maketrans() 取而代之的是：str.maketrans() bytes/bytearray.maketrans()
max min  返回字符串str中最大，最小字母
replace(old, new) 把字符串中old替换成new 如果max指定，则替换不超过max次
rfind, 从右边进行查找   rindex 从右边开始   rjust右对齐使用fillchar填充长度width的新字符串
rstrip() 删除末尾的字符串空格或这指定字符
split() 以str为分割符截取字符串， 如果num有指定值，则仅截取num+1的个子字符串
splitlines(keepends)  按照\r \n \r\n 分割， keepends为False不包含换行符，否则保留换行符
startwith(substr, beg=0, end=len(string))  检查字符串是否以substr开头，是返回True，否则返回False
strip  执行lstrip 和 rstrip
swapcase()， 将字符串中的大写转为小写，小写转为大写。
title()  返回标题化的字符串，就是将所有的单词都以大写字母开始，其余字母都为小写。
zfill() 返回长度为width的字符串，原字符串右对齐，前面填充0
isdecima()  检查字符串是否只包含十进制字符，如果是返回True
"""
# print('hello    python3')
# print('hello    python3'.expandtabs(8))  没有测试出来效果
# print(str2.find('lol'))  # 找不到返回-1
# print(str2.index('lol')) # 找不到返回-1
# print(str2.isalnum())  字符串中只包含数字和字母，返回True

# print('12肆3一123二伍三百千万亿兆'.isnumeric()) # 只包含数字字符，返回True
# print('12肆3一123二伍三百千万亿兆'.isdigit()) # 只包含数字，返回True

# join的用法
s1 = '-'
s2 = ''
seq = ('r', 'u', 'n', 'o', 'o', 'b')
print(s1.join(seq))
print(s2.join(seq))
print('-'.join('python3'))

# ljust用法
str4 = 'Runoob example...wow!!!'
print(str4.ljust(30, '*'))  # 如果原字符串比设置的width大，则没有任何变化，

# lstrip用法
# str5 = '    Runoob this is string example...wow!!!'
# str6 = '8888Runoob 8this is string example...wow!!!'
# print(str5.lstrip())   # 只会对最左边的进行操作，中间的以及最右边的都不会进行操作
# print(str6.lstrip('8'))

# maketrans()用法
str5 = 'Runoob!Runoob!'
mytable = str5.maketrans('R', 'N') # {82: 78} 返回了一个字典，是Unicode序数
# print(mytable)
print(str5.translate(mytable))

inttab = 'aeiou'
outtab = '12345'
transtab = str.maketrans(inttab, outtab)
# print(transtab)
print("this is string example...wow!!!".translate(transtab))

# 设置要删除的字符参数
txt = 'Google Runoob Taobao!'
x1 = 'gSa'
y1 = 'eJo'
z1 = 'odnght'   #设置要删除的字符
mytable1 = txt.maketrans(x1, y1, z1)
print(mytable1)
print(txt.translate(mytable1))  # 规则是先删除txt中的字符，然后再将字符串中相关的字符进行替换
# 使用时需要注意到：z必须是字符串，其字符被映射为None， 如果z中字符与x中字符重复，该重复的字符最终还是会被删除。也就是无论是否重复，只要
# 第三个参数z，z中的字符都会被删除。

# print(max("money", "heart"))
# print(min("money", "heart"))

str12 = 'www.w3cschool.cc'
print("菜鸟教程旧地址为：", str12)
print("菜鸟教程新地址为：", str12.replace('w3cschool.cc', 'runoob.com'))
str13 = 'this is string is is example...wow!!!'
print(str13.replace('is', 'was', 3))

str123 = "this is string is example...wow!!!"
# print(str123.split(' ', 2)) # 截取num + 1 个字符串

# str1234 = """123
# 1234
# 1234556
# 12123123
# 34234244234
# """
# print(str1234.splitlines(True))   # ['123\n', '1234\n', '1234556\n', '12123123\n', '34234244234\n']
# 截取后的字符串，每个子字符串中包含换行符

# str1234 = " 123 123   123   "
# print(str1234)
# print(str1234.strip())

# print(str123.swapcase())
# print(str123.title())
print("-----------")
print(str123.zfill(100))
print("12313123二3".isdecimal())
print("12313123二Ⅱ贰3".isnumeric())

